Memory is typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including random access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), and flash memory.
A flash memory is a type of memory that can be erased and reprogrammed in blocks instead of one byte at a time. A typical flash memory comprises a memory array that includes a large number of memory cells. Each of the memory cells includes a floating gate field-effect transistor capable of holding a charge. The cells are usually grouped into blocks of 64 pages of single level cells (SLC) or 128 pages of multilevel cells (MLC), where each page is typically 2048 bytes of data on 32 word lines. Each of the cells within a block can be electrically programmed on a random basis by charging the floating gate.
Non-volatile memory can be incorporated into solid state storage devices such as solid state drives. Solid state drives, incorporating a large number of individual non-volatile memory devices, such as a large number of memory die, can be used to replace the hard disk drives in computers that typically use magnetic or optical disks for storing large amounts of data. A solid state drive does not use moving parts whereas a hard disk drive requires a complex and sensitive drive and read/write head assembly to interact with the magnetic/optical disk. Thus, the solid state drives are more resistant to damage and loss of data through vibration and impacts.
As with most semiconductor memory, non-volatile memory can have a number of failed memory locations (e.g., bad cells, bad pages, bad blocks, etc.). The failed memory locations may be defectively fabricated or can also fail during use. If a memory location fails during operation, the data stored in that location or locations may be lost.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a way to recover data from defective memory locations.